import {
	defineStore
} from "pinia";

import {
	computed,
	onMounted,
	onUnmounted,
	reactive,
	ref,
	nextTick,
	toRaw,
	watch,
} from "vue";

import * as util from '@/amtf/utils'
// import { uid } from 'quasar'
// import { date } from 'quasar'
import useApi from "@/api/增查api.js"
import use单项集 from "@/hooks/单项集hook"

export default defineStore("good",
	() => {
		const key = "good"
		const api = useApi({ key: "good" })

		const a = reactive({
			已熟: false,
			是调试: false
		})

		const 单项组 = reactive([
			{ id: 4, 名称: "芙蓉王", 价格: 25, 单位: "包" },
			{ id: 1, 名称: "哇哈哈", 价格: 3, 单位: "瓶" },
			{ id: 2, 名称: "红牛", 价格: 3.5, 单位: "瓶" },
			{ id: 3, 名称: "矿泉水", 价格: 2.5, 单位: "瓶" },
		])

		const { 单项集 } = use单项集({ 单项组, 初始对象: { 编辑: false } })
		// const 单项集 = reactive({})

		const 单项模板 = {

		}

		async function 初始化() {
			const res = await api.查()
			// console.log('res: ', res);
			Object.assign(单项组, res)

			// let res2 = util.组转对象(单项组, { 编辑: false });
			// util.对象重予(单项集, res2);
			a.已熟 = true
			// 予单项集()
		}
		初始化()

		// function 予单项集() {
		// 	// for (let s of 单项组) {
		// 	// 	单项集[s.id] = { 编辑: false };
		// 	// }
		// 	let res2 = util.组转对象(单项组, { 编辑: false });
		// 	Object.assign(单项集, res2)
		// 	// util.对象重予(单项集, res2);
		// }

		function 改(item) {
			单项集[item.id].编辑 = true
		}

		const 名称候选值组 = computed(
			() => {
				const res = util.数组中取属性组(单项组, "名称")
				return res
			}
		)

		function 确定(item) {
			单项集[item.id].编辑 = false
		}

		function 删(item) {
			util.删除元素(单项组, item)
		}

		function 取编辑(item) {
			const res = 单项集[item.id].编辑
			return res
		}

		function 清缓存() {
			// util.数组重予(单项组, [])
			uni.removeStorage({
				key,
				success: function(res) {
					// console.log('success');
				}
			});
		}

		const setInputRef = (el, item) => {
			// console.log('setInputRef item.id: ', item.id);
			if (el) {
				单项集[item.id].inputref = el;
				// console.log('单项集: ', 单项集);
			}
		};

		async function 增(params) {
			const timeStamp = Date.now()
			const id = timeStamp

			// const id = date.formatDate(timeStamp, 'YYYY-MM-DDTHH:mm:ss.SSS')
			单项集[id] = { 编辑: true };
			// console.log('增 id: ', id);
			单项组.unshift({ id, 名称: "", 价格: 3, })

			await nextTick();
			// console.log(`单项集[id].inputref ??`, 单项集[id].inputref)
			const inputref = 单项集[id].inputref;
			// console.log('inputref: ', inputref);
			if (inputref) {
				inputref.focusInput(); // 调用子组件暴露的方法
			}
		}

		// watch(单项组, () => {
		// 	予单项集()
		// }, { immediate: true })

		watch(单项组, () => {
			// console.log("变化了");
			api.改整个对象(单项组)
			// uni.setStorage({
			// 	key: "good",
			// 	data: 单项组
			// })
		})

		return {
			a,
			名称候选值组,
			确定,
			取编辑,
			清缓存,
			删,
			改,
			setInputRef,
			单项组,
			单项集,
			增
		};

	}

);